查看原文
其他

肝了两天写的电影搜索APP

ELC TechMerger 2021-10-12

机缘巧合下肝了两天写了个MVP架构的电影搜索APP,以演示Android平台上APP开发的良好实践。 

 

知识

涉及到APP架构,设计模式,异步加载,分页加载,懒加载,下拉刷新,上拉加载,侧滑菜单,拖拽排序更多等知识。


国内知名的豆瓣电影API已经停止支持了, 转而选择了国外免费的OMDb接口。在如下网站输入邮箱账号即可获取自己的KEY。

https://www.omdbapi.com/apikey.aspx

 

需求

设想了大体的需求:提供输入框供用户输入关键字,点击搜索之后,将OMDb上检索得到电影海报进行展示,左滑电影海报支持收藏和取消收藏。右滑可以滑动到收藏的电影界面。

 

UI

主体上采用了ViewPager和BottomNavigation去展示搜索,收藏,关于三个页面。


搜索页面相对复杂些,选择了内嵌了EditText的ToolBar去展示自动展开和折叠的搜索区域。
电影列表则采用内嵌了RecyclerView的SwipeRefreshLayout去展示。


收藏页面采用RecyclerView和TouchHelper提供海报长按上下排序的功能。

 

架构

整体上采用了MVP架构。Activity和控件对应着View层,Model层承担着数据的请求和更新,Presenter层担当View层和Model层的衔接,通过接口回调。


MVP架构不是没有缺点,接口太多,维护麻烦。比如加一个功能,需要在View层,Presenter层和Modle层各增加调用和回调接口。


如下办法可以适当地减轻这种影响。

一,可以将各个接口按模块分好,集成到一个整体的接口里,各模块实现对应的内部接口即可;

二,部分接口可以定义default实现,避免不需要实现该接口的实现类复写一大堆空的实现;

三,将部分接口实现为抽象的基类,各实现类只要继承自该抽象类复写所需的函数即可;


当然MVVM架构是最优解,后面考虑改造为MVVM架构。

 

开源框架

开源框架上使用了ButterKnife绑定UI,Retrofit负责网络请求,GSON负责解析数据,glide负责加载网络图片。

 

效果

搜索界面(搜索框展开)



搜索界面(搜索框折叠)


 

收藏页面




Todo

有不少功能需要添加和完善。比如输入框内清空按钮功能,增加单元测试覆盖等。


App开源到了Github,欢迎大家star。

https://github.com/ellisonchan/EigaKensaku

: . Video Mini Program Like ,轻点两下取消赞 Wow ,轻点两下取消在看

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存